#include <iostream>

using namespace std;

const int N=1e6+10;

int a[N/10];
int f[N];
int vis[N];

int Find(int x)
{
	if(f[x]!=x)
	{
		f[x]=Find(f[x]);
	}
	return f[x];
}
void Union(int x,int y)
{
	f[x]=y;
}
int main()
{
	int n;
	cin>>n;
	for(int i=0;i<N;i++)
		f[i]=i;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		if(vis[a[i]])
		{
			a[i]=Find(a[i])+1;	
		}
		
		if(vis[a[i]-1])
		{
			Union(a[i]-1,a[i]);
		}
		if(vis[a[i]+1])
		{
			Union(a[i],a[i]+1);
		}
		
		
		vis[a[i]]=1;
		if(i!=1)
		{
			printf(" %d",a[i]);
		}
		else{
			printf("%d",a[i]);
		}
	}

	return 0;
}
